
package commonlib.domain;

/**
 * Contiene las probabilidades que se guardan en cada nodo del arbol
 * @author todo.grupo.5.1
 */

public class ChanceCombination
{
    // VARIABLES: --------------------------------------------------------------

    double probability;
    int numRulesApplied;

    // CONSTRUCTOR: ------------------------------------------------------------

    /**
     * crea un ChanceCombination con probabilidad 0 y 0 numero de reglas
     * aplicadas
     */
    public ChanceCombination()
    {
        this.probability = 0.0;
        this.numRulesApplied = 0;
    }

    /**
     * crea un ChanceCombination con unas probabilidades y numero de reglas
     * aplicadas.
     * @param probability
     * @param numRulesApplied
     */
    public ChanceCombination(double probability, int numRulesApplied)
    {
        this.probability = probability;
        this.numRulesApplied = numRulesApplied;
    }

    // GETTERS: ----------------------------------------------------------------

     /**
    * Esta funcion nos permite obtener la probabilidad de la change combination
    * @return un decimal (double) con la probabilidad
    */
    public double getProbability()
    {
        return this.probability;
    }

     /**
    * Esta funcion nos permite obtener el numero de reglas aplicadas de
    * la change combinations
    * @return un entero con el numero de reglas aplicadas
    */
    public int getNumRulesApplied()
    {
        return this.numRulesApplied;
    }

     /**
    * Esta funcion nos permite obtener la probabilidad real de la change
    * combinations, es decir la probabilidad total dividida eentre el numero de
    * reglas aplicadas
    * @return un decimal (double) con la probabilidad
    */
    public double getRealProbability()
    {
        return this.probability / (double)this.numRulesApplied;
    }

    // SETTERS: ----------------------------------------------------------------

     /**
    * Esta funcion nos permite modificar la probabilidad de la change combination
    * @param probability nueva probabilidad por la que se pretende sustituir la
    * anterior
    */
    public void setProbability(double probability)
    {
        this.probability = probability;
    }

     /**
    * Esta funcion nos permite modificar el numero de reglas aplicadas de
    * la change combinations
    * @param numRulesApplied entero con el nuevo numero de reglas aplicadas
    * por el que sustituiremos
    */
    public void setNumRulesApplied(int numRulesApplied)
    {
        this.numRulesApplied = numRulesApplied;
    }
}